Using Python Turtle, build the classic shoot 'em up game - space invaders game.

Space Invaders Wikipedia Page

Your space ship can move left and right and it can hit some alien ships. Every second the aliens will move closer to your ship. Once the aliens touch your ship then it's game over. There are usually some barriers between you and the aliens which offers you defensive positions.

You can play the game here:

https://elgoog.im/space-invaders/

Questions for this assignment

Reflection Time:

This is a place to journal your experience of completing this project. This will help you figure out how to improve as a developer.

Write down how you approached the project. What was hard, what was easy. How might you improve for the next project? What was your biggest learning from today? What would you do differently if you were to tackle this project again?

David Labitzke
Posted 7 days ago

Reflection Time:

This is a place to journal your experience of completing this project. This will help you figure out how to improve as a developer.

Write down how you approached the project. What was hard, what was easy. How might you improve for the next project? What was your biggest learning from today? What would you do differently if you were to tackle this project again?

Link to my GitHub repository

https://github.com/DavidLabitzke/Space-Invaders-Version-1


I briefly tackled some of the ways I'd like to improve this project in the readme of the repository, but essentially, I feel the code is not readable, suffers from performance issues, and doesn't utilize certain features of the module that could improve its overall readability and performance.


Of all the projects for this course, this was the one I was the most excited to work on. This ended up taking almost 2 weeks for me to complete. Rather than using the turtle module, I really wanted to try using pygame for this. I watched a few tutorials on YouTube, using a video by tech with Tim as inspiration for many of the features in this game.


One of the biggest hurdles I had with making this game, was getting the enemy movements correct. Enemies in Space Invaders don't move fluidly like in most games. They move somewhat jaggedly. This behavior was very difficult to configure at first, but I figured out a way to make it move, by having a move counter increment every frame of the game. Once the counter hits a certain point, then it calls the enemy's move function and resets the countdown.


At some point, I plan to completely redo this project, using features like pygame's sprite group to more easily control the on screen enemies. Right now, I have a nested list, that is leading to significant performance issues.

Give Feedback

What went well? What could be improved?

Suvra Ghosh
Posted 1 day ago

Reflection Time:

This is a place to journal your experience of completing this project. This will help you figure out how to improve as a developer.

Write down how you approached the project. What was hard, what was easy. How might you improve for the next project? What was your biggest learning from today? What would you do differently if you were to tackle this project again?

Approach to the Project: The provided code uses the Tkinter library to create a simple GUI application for adding a watermark to an image. It defines functions to add the watermark, handle the button click event, and opens a file dialog to select an image file. The chosen image is then processed and saved with the watermark added.

What Was Easy: The overall structure of the code is relatively straightforward, and the usage of Tkinter for creating the GUI is concise. The core logic of adding the watermark is also clear and follows a step-by-step process.

What Was Hard: The code lacks error handling and validation. For example, if the selected file is not an image or the font file ("arial.ttf") is missing, it may result in exceptions. Additionally, the code always saves the output image as "output.jpg" without considering the original file name or extension, which might not be desirable.

How to Improve for the Next Project:

  1. Implement error handling and validation to handle potential exceptions and user errors gracefully. For instance, check if the selected file is a valid image file before proceeding with the watermarking process.

  2. Allow users to specify the output file name and extension, either by opening a file dialog for saving or by appending the watermark to the original file with a new name.

  3. Consider adding options for customizing the watermark's appearance, such as font size, color, and transparency, to provide more flexibility.

  4. Improve the user interface by adding additional elements like progress indicators, preview of the watermarked image, or the ability to batch process multiple images.

Biggest Learning from Today: The biggest learning from today's code could be understanding how to use Tkinter to create a simple GUI application and integrate it with image processing using the PIL library. It demonstrates how to handle events, interact with file dialogs, and update the GUI with status messages.

What I Would Do Differently: If I were to tackle this project again, I would focus on incorporating error handling and validation from the beginning. Additionally, I would consider implementing more customization options for the watermark and improving the user interface to provide a better user experience.

Remember, reflection and continuous improvement are key to becoming a better developer.

Give Feedback

What went well? What could be improved?

Rose Elizabeth Bobby
Posted 1 day ago

Reflection Time:

This is a place to journal your experience of completing this project. This will help you figure out how to improve as a developer.

Write down how you approached the project. What was hard, what was easy. How might you improve for the next project? What was your biggest learning from today? What would you do differently if you were to tackle this project again?

Give Feedback

What went well? What could be improved?